part of 'purchase_item_dto.dart';

class ApiWebPurchaseItemDtoFactory {
  const ApiWebPurchaseItemDtoFactory._internal();

  static const _instance = ApiWebPurchaseItemDtoFactory._internal();

  factory ApiWebPurchaseItemDtoFactory() {
    return _instance;
  }

  ApiWebPurchaseItemDto fromJson(Map<String, dynamic> json) {
    final type = json[kApiWebPurchaseItemTypeKey] as String;

    switch (type) {
      case kApiWebSubscriptionTypeValue:
        return ApiWebSubscriptionDto.fromJson(json);
      case kApiWebOneTimePurchaseItemTypeValue:
        return ApiWebOneTimePurchaseItemDto.fromJson(json);
      default:
        throw UnimplementedError();
    }
  }
}
